python 节省内存的for循环技巧

您所在的位置:网站首页 python 减少for循环 python 节省内存的for循环技巧

python 节省内存的for循环技巧

2023-07-02 22:52| 来源: 网络整理| 查看: 265

python 内存节省的方法 【问题】 程序创建大量(可能上百万)对象,导致占用大量内存 【方法】 一、创建大量的对象

对于主要当成简单的数据结构类而言,通过添加__slots__属性来极大的减少实例所占用的内存 eg:

class Date: __slots__ = ['year', 'month', 'day'] def __init__(self, year, month, day): self.year = year self.month = month self.day = day

原理: 定义__slots__后,python会使用一种更加紧凑的内部表示。 实例通过一个很小的固定大小的数组来构建,而不是为每个实例定义 一个字典,这跟元组或列表很类似。在__slots__中列出得属性名在 内部被映射到这个数组的指定小标上。 缺点

不能再给实例添加新的属性,只能使用__slots中定义的属性名。 定义了slots后,类不在支持一些普通类特性, 比如多继承。

二、 python 循环内存优化之生成器

打印内容字节数较小时,全部载入内存后,再打印,没有问题。 可是,如果成千上百万打印数据时,存在out of memory 。

常用方法 使用itertools模块

1、 拼接元素

itertools中chain()实现元素拼接 list(chain([1,2], [3,4]))

底层代码实现:

def chain(*iterables): for it in iterables: for it element in it: yield element

可知,chain 本质上是一个生成器,一次读入一个元素到内存,做到高效节省内存

2、逐个累加 返回列表的累积汇总值

参考连接:http://www.360doc.com/content/19/1221/14/21698786_881183436.shtml



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3